

a= 28797400515907272777788720807074644544027451278095400067042490341190120189352334996138241452148175532423821718090277395544089558638646831391470663953536431467111119049130395049948300576571874111379675000352239527955880644729101297251062158828728310665680365773085974598961344628703541159263959715901972088085671585667147671325742838886147670525797090587795708163528587942880046916108794634624732433742679683335015633458542741969158852013109875937308662295100897092238174768563911924051227453173789788771604903556455351861979748446947046013505433744531553377838071281706913162114769190959526192635355883054963053796050
c= 108924077368402221545268815431286817272969610028006900673088231628674376078204899375842466488736993088949956178259569762462005357396993558049953263821557049583251318459600909979042338427701108425851181554817284087930622076981588104383083656830566307756293821683445978726751114228982520030534054029044197200795294927175993734795493800775322053110094799154708265390934095

import libnum
import gmpy2

p=gmpy2.iroot(a,2)[0]
print(p)
q=gmpy2.iroot(a-p**2,2)[0]
print(q)
n=p*q
phi=(p-1)*(q-1)

for e in range(2**15,2**16):
    try:
        if gmpy2.is_prime(e):
            d=gmpy2.invert(e,phi)
            m=pow(c,d,n)
            flag=libnum.n2s(int(m))
            if b"flag" in flag:
                print(flag)
    except:
        continue